//
//  YXStatusPictureView.swift
//  yanXiangWeiBo
//
//  Created by 颜祥 on 15/12/25.
//  Copyright © 2015年 yanxiang. All rights reserved.
//

import UIKit
import FFAutoLayout
import SDWebImage

class YXStatusPictureView: UICollectionView
{
    // 微博模型，用来显示图片
    var status: YXStatus?
    
    // 计算图片的高度
    func calPicSize() -> CGSize
    {
        // 设置图片大小
        let itemSize: CGSize = CGSize(width: 90, height: 90)
        
        // 图片之间的间距
        let margin: CGFloat = 10
        
        // 设置流水布局的参数
        layout.itemSize = itemSize
        
        // 设置间距
        layout.minimumInteritemSpacing = 0
        layout.minimumLineSpacing = 0
        
        // 获得图片的数量,没有就设置为0
        let count = status?.pic_urls?.count ?? 0
        
        // 1.没有图片
        if count == 0
        {
            return CGSizeZero
        }
        
        // 2.有1张图片
        if count == 1
        {
            let size = CGSize(width: 150, height: 120)
            layout.itemSize = size
            return size
        }
        
        // 3.有4张图片
        if count == 4
        {
            let value = 2 * itemSize.width + margin
            return CGSize(width: value, height: value)
        }
        
        // 4.其他情况
        // 设置图片展示的列数
        let colum = 3
        
        // 宽度： 列数*宽度 + (列数-1)*间距
        let width = CGFloat(colum) * itemSize.width + (CGFloat(colum) - 1) * margin
        
        // 行数: (图片的张数 + 列数 - 1) / 列数
        let row = (count + colum - 1) / colum
        
        // 行高
        let height = CGFloat(row) * itemSize.height + (CGFloat(row) - 1) * margin
        
        return CGSize(width: width, height: height)
    }
    
    
    
    // 设置流水布局属性
    let layout = UICollectionViewFlowLayout()
    
    // 设置cell重用标示
    let ReuseIdentifier = "ReuseIdentifier"
    
    // 初始化
    init() {
        super.init(frame: CGRectZero, collectionViewLayout: layout)
        // 注册cell
        self.registerClass(YXStatusPictureViewCell.self, forCellWithReuseIdentifier: ReuseIdentifier)
        // 数据源
        self.dataSource = self
        
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
}


// 扩展实现数据源方法
extension YXStatusPictureView: UICollectionViewDataSource
{
    // 图片cell的数量
    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        
        return status?.pic_urls?.count ?? 0
    }
    
    // 返回cell
    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        
        let cell = self.dequeueReusableCellWithReuseIdentifier(ReuseIdentifier, forIndexPath: indexPath) as! YXStatusPictureViewCell
        
        // 赋值
        cell.imageURL = status?.storePicUrls![indexPath.item]
        
        return cell
    }
    
}

// 自定义cell
class YXStatusPictureViewCell: UICollectionViewCell
{
    
    // 图片的URL，用来显示图片
    var imageURL: NSURL?
    {
        didSet
        {
            pictureView.sd_setHighlightedImageWithURL(imageURL!)
        }
    }
    
    
    // 重写构造方法
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        // 准备UI
        prepareUI()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    func prepareUI()
    {
        // 添加图片
        contentView.addSubview(pictureView)
        
        // 添加约束
        pictureView.ff_Fill(contentView)
    }
    
    
    
    // 懒加载
    private lazy var pictureView: UIImageView = UIImageView(image: nil)
}